--
-- Cambio de version
-- 
-- Eliminación de asignacion de ancho al dialogo para elegir padron

update ambmnu set propcontroles = 
replace(propcontroles,'SELF.ANCHO=650','')
WHERE position('SELF.ANCHO=650' in propcontroles) > 0 AND 
      position('[BuscaRegistroPad_Dlg]' in propcontroles) > 0; 


--      
-- Corrección de la funcion que tenia un error de sintaxis inexplicable
--

CREATE OR REPLACE FUNCTION public.aaloginwebparametros(
	json_sesion character varying)
    RETURNS character varying
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
AS $BODY$
DECLARE
  json_pedido  varchar;
  json_convertido varchar;
  cMov         refCursor;
  vMoneda varchar;
  vFecha  varchar;
  vIdSesion integer;
  vComillas varchar;
BEGIN
 -- Migracion colada en esta funcion
 /* Desactivada el 18/8/2021
  IF NOW() > '20210701' THEN
    UPDATE AFIP.cndivaempxcndivapad SET letra = 'A' WHERE codcndivaemp = 'I' AND codcndivapad = 'M' AND letracom = 'v' AND letra = 'B';
  END IF;
 */
  /* 
     ATENCION: Los json van entre llaves, pero para que ODBC no se queje al migrar los armamos con 
     chr(123) = llave abre
     chr(125) = llave cierra
     En este comentario, en la realidad vienen las llaves
     Funcion que se llama inmediatamente despues del login para determinar parametros para enviar a la pagina servicios_login.php
     que devolvera un json que se pasa a la funcion aaloginwebacciones para tomar accion de algo.
     recibe un json_sesion de la forma : 
        <llave abre>@codambusracc@:@...@,@codambequ@: ... ,@codambemp@:@...@,@codambsuc@:@...@<llave cierra>
        lo primero que se hace es cambiar las @ por comilla doble y queda un json bien formado.   
     el json_pedido puede tener cualquier cosa que debera ser interpretada por la pagina servicios_login.php
        
  */
  -- recomposicion del JSON como un verdadero JSON.
  vComillas := chr(34);
  json_sesion := replace(json_sesion, '@',vComillas);

  --
  -- Se genera en la tabla auditoria.sesion un registro para vincular la sesion actual con el usuario logueado en abacoGestion
  -- si hubo un cambio de usuario la sesion se mantiene, con lo cual se actualiza el registro.
  IF (select aaversion_postgres_necesaria(9,3)) AND EXISTS (SELECT * FROM AMBCFG WHERE BITACORA <> 'N') THEN
     vIdSesion    := (SELECT pg_backend_pid());
     IF EXISTS (SELECT * FROM auditoria.sesion WHERE idSesion = vIdSesion) THEN
        UPDATE auditoria.sesion SET 
           codambusracc = cast(cast(json_sesion as json) ->> 'codambusracc' as varchar), 
           codambemp    = cast(cast(json_sesion as json) ->> 'codambemp' as varchar), 
           codambsuc    = cast(cast(json_sesion as json) ->> 'codambsuc' as varchar), 
           codambequ    = cast(cast(json_sesion as json) ->> 'codambequ' as varchar) 
        WHERE idSesion = vIdSesion;
     ELSE   
        INSERT INTO auditoria.sesion values (vIdSesion, cast(cast(json_sesion as json) ->> 'codambusracc' as varchar),
					  	          cast(cast(json_sesion as json) ->> 'codambemp' as varchar), 
								  cast(cast(json_sesion as json) ->> 'codambsuc' as varchar), 
						    	  cast(cast(json_sesion as json) ->> 'codambequ' as varchar)
					 				); 
     END IF;
  END IF;

 -- Fin de registro de la sesion.
  IF NOT (select aaversion_postgres_necesaria(9,3)) THEN
     RETURN '';
  ELSE
     IF strpos((select ini from public.ambcfg),'CotizacionManual') > 0  THEN 
        RETURN '';
     ELSE
       json_pedido := chr(123) || vComillas || 'ultimasCotizaciones' || vComillas || ':['; 
       OPEN cMov FOR SELECT VALMON.AFIPCOD, coalesce(TO_CHAR(MAX(VIGENCIA),'YYYYMMdd'),'20210101')
       FROM VALMON
       LEFT JOIN VALCTZ ON VALMON.COD = VALCTZ.CODVALMON
       WHERE AFIPCOD IS NOT NULL AND AFIPCOD <> 'PES' 
       GROUP BY VALMON.AFIPCOD;
       FETCH cMov INTO vMoneda, vFecha;
       LOOP
         IF NOT FOUND THEN EXIT; END IF;
         json_pedido := json_pedido || chr(123) || vComillas || 'moneda' || vComillas || ':' || vComillas || vMoneda || vComillas || ',' 
                                                || vComillas || 'fecha'  || vComillas || ':' || vComillas || vFecha  || vComillas || chr(125) || ',';
         FETCH cMov INTO vMoneda, vFecha;
       END LOOP;
       CLOSE cMov;
       json_pedido := substr(json_pedido,1, length(json_pedido) - 1) || ']' || chr(125);
       return json_pedido;  
     END IF;
 END IF;  

END;
$BODY$;

ALTER FUNCTION public.aaloginwebparametros(character varying)
    OWNER TO abacouser;

--
-- Cambio de lugar de funciones de mantenimiento
--

DROP FUNCTION IF EXISTS public.aacreatevistas();
DROP FUNCTION IF EXISTS public.aadropvistas();

CREATE OR REPLACE FUNCTION abaco_utiles.aacomodar_fuentes(
	)
    RETURNS boolean
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
AS $BODY$
BEGIN
  UPDATE pg_catalog.pg_proc SET prosrc = public.aasacame_doble_13(prosrc); 
  RETURN True;
END;
$BODY$;

ALTER FUNCTION abaco_utiles.aacomodar_fuentes()
    OWNER TO abacouser;
   
DROP FUNCTION IF EXISTS public.aacomodar_fuentes();



--
SELECT aaVersion('533.01','533.00');
--

